/*
	Copyright (C) 2013 Pontificia Universidad Catolica del Peru
	contact: http://avatar.inf.pucp.edu.pe/realidad-aumentada/
	address contact: Av. Universitaria 1801, San Miguel, Lima-Peru.
	
	This file is part of UbicAR PUCP.

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with This program.  If not, see <http://www.gnu.org/licenses/>.
*/
/*
	Author: Pedro Carrión Castagnola
	Pontificia Universidad Catolica del Peru
	Direccion de Informatica Academica
	
	Modified by: Alvaro Roger Agüero Sánchez, Rodolfo Javier Galvez Meza
	Pontificia Universidad Catolica del Peru
	Departamento de Ingeniería
*/

package org.grupoavatar.guiaubicua.entidades;

import java.text.DecimalFormat;
import java.util.ArrayList;

import org.grupoavatar.guiaubicua.VInicial;
import org.grupoavatar.guiaubicua.mix.Marker;
import org.grupoavatar.guiaubicua.mix.MixContext;
import org.grupoavatar.guiaubicua.mix.MixUtils;
import org.grupoavatar.guiaubicua.mix.data.DataSource;
import org.grupoavatar.guiaubicua.mix.data.DataSource.DATASOURCE;
import org.grupoavatar.guiaubicua.mix.gui.PaintScreen;
import org.grupoavatar.guiaubicua.mix.gui.TextObj;
import org.grupoavatar.guiaubicua.auxiliares.Red;
import org.grupoavatar.guiaubicua.auxiliares.Servicio;
import org.grupoavatar.guiaubicua.auxiliares.Utiles;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.location.Location;


public class ARMarker /*extends Marker*/  {

	private int visibilidadMinima;
	private double distanciaMayorTransparencia; //en metros
	private double distanciaSinTransparencia; //en metros
	private float pendiente;

	//nuevo constructor GUIA UBICUA v3
	public ARMarker(/*String id, String title, double latitude, double longitude,
			double altitude, DATASOURCE categoria, String id_punto_padre,
			String descripcion, String desc_corta, String contacto,
			String ubicacion, int piso, int pisos, int estrellas, int icono,
			ArrayList<String> urlImgs,
			ArrayList<Red> redes, ArrayList<String> enlaces,
			ArrayList<String> fechas, ArrayList<String> poiIdHijos, ArrayList<Servicio> servicios, ArrayList<String> tags*/
			String title, double latitude, double longitude, double altitude) {
		// TODO Auto-generated constructor stub
		//super(title, latitude, longitude, altitude);
		
		//this.poiId = id;		
//		this.poiIdPadre = id_punto_padre;
//		this.descripcion = descripcion;
//		this.desc_corta = desc_corta;
//		this.contacto = contacto;
//		this.ubicacion = ubicacion;
//		this.piso = piso;
//		this.pisos = pisos;
//		this.estrellas = estrellas;		
//		this.icono = icono;
//			
//		this.promedio = 0;
//		
//		this.tags = tags;
//		this.urlImgs = urlImgs;
//		this.redes = redes;
//		this.fecha = fechas;
//		this.poiIdHijos = poiIdHijos;
//		if (this.poiIdHijos != null)
//			this.poiHijos = new ArrayList<ARMarker>();
//		
//		this.poiPadre = null;

		//visibilidad
		//a distanciaMayorTransparencia o más, la visibilidad será de porcVisibilidad porciento
//		distanciaMayorTransparencia = 700; 
		//a distanciaSinTransparencia o menos, la visibilidad será de 100%
//		distanciaSinTransparencia = 100; 
//		float porcVisibilidad = 0.65f;
//		visibilidadMinima = (int) Math.round(porcVisibilidad*255);
//		pendiente = (float) ((visibilidadMinima - 255) / (distanciaMayorTransparencia - distanciaSinTransparencia));
	}

//	@Override
//	public void update(Location curGPSFix) {
//		super.update(curGPSFix);
//	}

//	@Override
//	public int getMaxObjects() {
//		return MAX_OBJECTS;
//	}

//	@Override
//	public String getID() {
//		return poiId;
//	}
	
//	public ArrayList<ARMarker> getHijos() {
//		return poiHijos;
//	}
	
//	public void inicializaListaHijos() {
//		poiHijos = new ArrayList<ARMarker>();
//	}
	
//	public void setPoiPadre(ARMarker padre){
//		this.poiPadre = padre;
//	}
	
//	public ARMarker getPadre() {
//		return poiPadre;
//	}
//	
//	public int getPiso() {
//		return piso;
//	}
//	
//	public int getPisos() {
//		return pisos;
//	}
//	
//	public ArrayList<String> getFecha() {
//		return fecha;
//	}
//
//	public void setFecha(ArrayList<String> fecha) {
//		this.fecha = fecha;
//	}
//
//	public String getDescripcion() {
//		return descripcion;
//	}
//
//	public void setDescripcion(String descripcion) {
//		this.descripcion = descripcion;
//	}
//
//	public String getPoiIdPadre() {
//		return poiIdPadre;
//	}
//
//	public void setPoiIdPadre(String poiIdPadre) {
//		this.poiIdPadre = poiIdPadre;
//	}
//
//	public String getTitlePadre() {
//		return titlePadre;
//	}
//
//	public void setTitlePadre(String titlePadre) {
//		this.titlePadre = titlePadre;
//	}
//
//	public ArrayList<String> getPoiIdHijos() {
//		return poiIdHijos;
//	}
//
//	public void setPoiIdHijos(ArrayList<String> poiIdHijos) {
//		this.poiIdHijos = poiIdHijos;
//	}
//
//	public ArrayList<String> getTitleHijos() {
//		return titleHijos;
//	}
//
//	public void setTitleHijos(ArrayList<String> titleHijos) {
//		this.titleHijos = titleHijos;
//	}
//
//	public ArrayList<String>getTags() {
//		return tags;
//	}
//	
//	public ArrayList<String> getUrlImgs() {
//		return urlImgs;
//	}
//
//	public void setUrlImgs(ArrayList<String> urlImgs) {
//		this.urlImgs = urlImgs;
//	}
//
//	public String getContacto() {
//		return contacto;
//	}
//
//	public void setContacto(String contacto) {
//		this.contacto = contacto;
//	}
//
//	public String getUbicacion() {
//		return ubicacion;
//	}
//
//	public void setUbicacion(String ubicacion) {
//		this.ubicacion = ubicacion;
//	}
//	
//	public int getIcono() {
//		return icono;
//	}
	
//	public boolean tieneIcono() {
//		boolean desicion = false;
//		if ( icono >0) {
//			desicion = true;
//		}
//		return desicion;
//	}
	
//	public boolean tieneValoracion() {
//		boolean flag = false;
//		if (estrellas==1) flag= true;
//		return flag;
//	}
		
	
//	public float getPromedio() {
//		return promedio;
//	}
	
//	public ArrayList<Red> getRedes() {
//		return redes;
//	}
	
//	public void drawCircle(PaintScreen dw) {
//		if (isVisible) {
//			float maxHeight = dw.getHeight();
//			//inicio nuevo para resize
////			double angle = 2.0*Math.atan2(10,distance);
////			double radius2 = Math.max(Math.min(angle/0.44 * maxHeight, maxHeight),maxHeight/25f);
//			//fin nuevo para resize
//			if (unicoMarker)	{
//				dw.setStrokeWidth(maxHeight / 100f);
//				dw.setFill(false);
//				radius = Math.max( ((maxHeight/2 - maxHeight/25f)/400*(400 - distance) + maxHeight/25f), maxHeight/25f);
//				dw.paintCircle(cMarker.x, cMarker.y, (float)radius);
//			}
//			else	{
//				radius = maxHeight/20f;
//				Bitmap bitmap = null;
//				float x=cMarker.x - (float)radius;
//				float y=cMarker.y - (float)radius;
//				if (tieneIcono()) {
//					bitmap = DataSource.getBitmap(icono, (int)(radius*2), icono==2);
//					if (icono==2) x = cMarker.x - (float)0.5*bitmap.getWidth();
//				} else {
//					bitmap = DataSource.getBitmap(datasource, (int)(radius*2));
//				}				
//				if(bitmap!=null) {										
//					dw.paintBitmap(bitmap, x, y);	
//				}
//				else	{
//					dw.setStrokeWidth(maxHeight / 100f);
//					dw.setFill(true);
//					dw.paintCircle(cMarker.x, cMarker.y, (float)radius);
//				}
//			}
//			
//		}
//	}
	
//	public void drawTextBlock(PaintScreen dw) {
//		if (isVisible) {
//			float maxHeight = Math.round(dw.getHeight() / 10f) + 1;
//			
//			String textStr = "";
//
//			double d = distance;
//			DecimalFormat df = new DecimalFormat("@#");
//			if (d < 1000.0) {
//				textStr = title + " (" + df.format(d) + "m)";
//			} else {
//				d = d / 1000.0;
//				textStr = title + " (" + df.format(d) + "km)";
//			}
//			
//			int transp = Math.round(getVisibilidadSegunDistancia());
//			int bgColor = Color.argb((int) (Math.round(transp / 1.5)), 200,
//					200, 200);
//			int textColor = Color.argb(transp, 10, 10, 10);
//			float fontSize = Math.round(maxHeight / 2.5f);
//			if (fontSize > 18f) fontSize = 18f;
//			textBlock = new TextObj(textStr, fontSize, 100,
//					bgColor, bgColor, textColor, Color.argb(64, 0, 0, 0),
//					dw.getTextAsc() / 2 , dw, false);
//
//			float currentAngle = MixUtils.getAngle(cMarker.x, cMarker.y,
//					signMarker.x, signMarker.y);
//
//			this.txtLab.prepare(textBlock);
//
//			dw.setStrokeWidth(1f);
//			dw.setFill(true);
//			if (unicoMarker)	{
//				dw.paintObj(txtLab, signMarker.x - txtLab.getWidth()/2, signMarker.y + maxHeight, currentAngle + 90, 1, false);
//			}
//			else	{
//				dw.paintObj(txtLab, signMarker.x - txtLab.getWidth()/2, cMarker.y + maxHeight/1.5f, currentAngle + 90, 1, false);
//			}
//			
//		}
//
//	}
	
//	public int getVisibilidadSegunDistancia() {
//		if (distance > distanciaMayorTransparencia)
//			return visibilidadMinima;
//		else if (distance < distanciaSinTransparencia)
//			return 255;
//		int visibilidad = (int) (Math.round(pendiente * (distance - distanciaSinTransparencia) + 255f));
//		return Math.max(visibilidad, visibilidadMinima);
//	}
	
//	protected int getDataSourceColor()	{
//		int color = DataSource.getColor(datasource);
//		return Color.argb(getVisibilidadSegunDistancia(), Color.red(color), Color.green(color), Color.blue(color));
//
//	}

//	public String getDes_Corta() {
//		// TODO Auto-generated method stub
//		return desc_corta;
//	}

//	public Bitmap getDataSourceCircleIconRA(Resources recursos) {
//		// TODO Auto-generated method stub
//		Bitmap bitfile_cate=null;
//		if () {        	
//			if (this.icono==2) {
//				bitfile_cate = BitmapFactory.decodeResource(recursos, VInicial.getContext().getDataSourceCircleIconRA(this.getDatasource()));
//			} else
//			{
//				bitfile_cate = BitmapFactory.decodeResource(recursos, VInicial.getContext().getDataSourceCircleIconRA(this.getIcono()));
//			}
//        } else {
//        	bitfile_cate = BitmapFactory.decodeResource(recursos, VInicial.getContext().getDataSourceCircleIconRA(this.getDatasource()));
//        }
//		return bitfile_cate;
//	}

//	public Drawable getDrawable(Resources recursos) {
//		VInicial.getContext();
//		// TODO Auto-generated method stub
//		return recursos.getDrawable( MixContext.getDataSourceIcon(this.getDatasource()) );				
//	}
		

//	public String textoCompartir() {
//		// TODO Auto-generated method stub
//		return "UbicAR PUCP :: "+this.getTitle() + "\n"
//				+ "visita "+Utiles.ShowURL()+this.getID();		
//	}
	
//	public void setPromedio(float prom){
//		this.promedio = prom;
//	}
}
